//package cn.edu.lingnan.controller;
//
//import cn.edu.lingnan.bean.Book;
//import cn.edu.lingnan.repository.BookRepository;
//import cn.hutool.core.date.DateTime;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.util.RandomUtil;
//import com.sun.org.apache.xpath.internal.operations.Mod;
//import org.springframework.data.repository.query.Param;
//import org.springframework.stereotype.Controller;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.servlet.ModelAndView;
//
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
//import java.lang.reflect.Array;
//import java.util.*;
//
//
//@Controller
//@RequestMapping("/bookController")
//public class BookController {
//
//
//
//    /**
//     * 需求：实现列表查询
//     *  思路：
//     *      1、创建Controller类
//     *      2、编写实现方式，映射请求
//     *      3、试图遍历操作
//     *      4、时间10分
//     */
//    @Resource
//    BookRepository bookRepository;
//
//    @RequestMapping("/searchBook")
//    public String searchBook(Model model){
//
//       // List<Book> books = bookRepository.findAll();
//        model.addAttribute("book1",books);
//
//        return "showSearchBook";
//    }
//
//    @RequestMapping("/searchBook2")
//    public ModelAndView searchBook(){
//        ModelAndView modelAndView = new ModelAndView();
//
//        //List<Book> books = bookRepository.findAll();
//
//        modelAndView.addObject("book1",books);
//
//        modelAndView.setViewName("showSearchBook");
//
//        return modelAndView;
//    }
//
//    @RequestMapping("/deleteBook")
//    public String deleteBook(Model model,@RequestParam("id") int id){
//
//        System.out.println(id);
//        bookRepository.deleteById(id);
//
//        return "redirect:/bookController/searchBook";
//    }
//
//    @Transactional
//    @RequestMapping("/updateBook")
//    public String updateBook(Model model,int id){
//
//
//       int result = bookRepository.updateBookById("我最帅",id);
//        System.out.println(result);
//        return "redirect:/bookController/searchBook";
//
//    }
//
//    /**
//     * 转发与重定向区别？？
//     *  1、请求次数
//     *      重定向是浏览器向服务器发送一个请求并收到响应后再次向新地址发送请求
//     *      转发是服务器收到请求后为类完成响应跳转到一个新的地址
//     *      重定向2次请求，转发1次请求
//     *  2、地址栏不同
//     *      重定向地址栏会发生变化
//     *      转发地址栏不会发生变化
//     *  3、是否共享数据
//     *      重定向不共享数据（易造成数据丢失）
//     *  4、跳转权限
//     *      重定向可以跳转到任意的url
//     *      转发只能跳转当前当前项目的资源
//     *  5、发生的行为不同
//     *      重定向是客户端行为
//     *      转发是服务端行为
//     */
//
//    //测试Thymeleaf内置对象的方法
//
//    @RequestMapping("/testThymeleafTools")
//    public String testThymeleafTools(Model model, HttpServletRequest request, HttpSession session){
//
//        List<Object> datas = new ArrayList<>();
//        datas.add("测试Thymeleaf内置对象");
//        datas.add("202112251207");
//        model.addAttribute("datas",datas);
//        //获取Date类型的当前时间
//        Date date = DateUtil.date();
//        String dataTime = DateUtil.now();
//        model.addAttribute("curDate",new Date());
//        //生成[10,100) 的随机数
//        RandomUtil.randomInt(10,100);
//        model.addAttribute("money",Math.random()*100);
//
//        Calendar calendar = Calendar.getInstance();
//        Date[] arrDate = {calendar.getTime(), calendar.getTime()};
//        List listDate = Arrays.asList(arrDate);
//        return "showThymeleaf";
//    }
//
//
///**
// * RESTful支持
//
// * RESTful一个资源定位以及资源操作的风格，不是标准也不是协议，只是一个风格，是对Http协议的诠释。
// * 资源定位:互联网所有事物都是资源，要求url中没有动词、只有名词、没有参数
// * Url: http://localhost:9101/testThymeleafTools?userName=admin
// *
// * 资源操作: put、delete、post、get，可以使用不同方法对资源进行操作，相对于分别对应︰添加、删除、修改
// * 查询操作
// * o get (select)︰从服务器取出资源（(一项或多项)===>查询@GetMapper
// * o post (create)︰在服务区新建资源操作===>插入、新建、添加@PostMapper
// * o put (update)︰在服务器更新资源（客服端提供改变后的完整资源)===>完全更新@PutMapper
// * o patch (update)︰在服务器更新资源（客服端提供改变属性) ====>部分更新@PatchMapper
// * o delete (delete)︰从服务区删除资源===>删除|@DeleteMapper
// */
//
//
//
//
//
//    // 1.获取所有
//    @GetMapping("/findAll")
//    public String findAll(){
//
//        return null;
//    }
//
//    //2.新建
//    @PostMapping("/creat")
//    public String creat(){
//        return null;
//    }
//
//    //3.根系id获取
//    @GetMapping("/getId")
//    public String getId(){
//        return null;
//    }
//    //4.根据ld部分更新
//    @PatchMapping("/getIdPart")
//    public String updateByIdPart(){
//        return null;
//    }
//    //5.根据id进行全部信息更新
//    @PutMapping("/updateByIdAll")
//    public String updateByIdAll(){
//        return null;
//    }
//    //6.根据id删除
//    @DeleteMapping("/deleteById")
//    public String deleteById(){
//        return null;
//    }
//
//
//
//
//
//
//
//
//
//}
